1. Field of the Invention
The invention relates to distributed computing systems and, more particularly, to management of data which is delivered to and/or retrieved by an interactive television receiver.
2. Description of the Related Art
Interactive television systems provide a means to deliver interactive content as well as ordinary television audio and video to a large number of subscribers. Programs broadcast by these systems may incorporate television audio and video, still images, text, interactive graphics and applications, and many other components. They may also provide a number of services, such as commerce via the television, electronic program guides (EPGs), video-on-demand, and other interactive applications to viewers. The interactive content of the interactive television signal may therefore include application code, data associated with the audio and video, control signals, raw data and many other types of information. This information may be combined into one or more signals for transmission to subscriber receivers.
The interactive functionality of the television is generally controlled by an integrated receiver/decoder (IRD), or similar mechanism, which is frequently incorporated into a set-top box. The IRD receives the signal provided by a broadcast service provider or system operator and separates the interactive portion from the audio-video portion. The IRD uses the interactive information to, for example, execute an application while the audio-video information is transmitted to the television. The IRD may also combine interactive graphics or audio generated by the interactive application with the received audio-video information.
Interactive content such as application code or information relating to television programs may be broadcast in a cyclical or repeating format. The pieces of information which are broadcast in this manner form what may be referred to as a “carousel.” A carousel may include multiple modules of data, including a directory module which identifies the particular modules which correspond to a given application. While a single carousel may be transported as a contiguous data stream, it is also possible to multiplex two or more carousels into a single data stream. As an alternative or adjunct to using a carousel format, some systems may utilize a return path to request and/or receive interactive content.
The pieces of information, or data objects, in a carousel may be intended to be combined in a single object data stream in order to form a program. This program may also contain, or be associated with, streaming data such as audio or video. For example, an interactive television game show may combine television audio and video with interactive content such as application code which allows users to answer questions. Another example would be a news program which combines audio and video with application code that inserts current stock prices in a banner at the bottom of the screen. Still further, an interactive application may provide services such as shopping or Web browsing.
As noted above, interactive television applications may consist of a set of program modules including a directory module which identifies the modules which are part of the application. Security for the executable application may include attaching a signed certificate to directory modules and signing the directory content. In addition, the integrity of modules may be monitored by including respective hash values in the directory module. At a receiver the certificate and hash values may then be checked using various verification procedures. Applications which have been verified may then be executed.
Because applications may include data which is dynamic in nature, managing such data presents a variety of challenges. In order to effectively manage changes to data modules, a number of approaches may be used. One approach includes tagging modules with version numbers. By monitoring the version numbers of modules, a receiver may detect a new version of a module has been received. However, given there may be many modules which must be monitored, such an approach is not particularly efficient. Further, if a particular module is no longer being broadcast (i.e., the change in this case is the removal of the module from the carousel), simply monitoring version numbers of received modules may not be an effective means of detecting such a change.
Another approach to managing changes to modules involves monitoring directories. For example, as noted above a directory module may identify the modules which make up a particular carousel. Such a directory may also indicate the current version of each of those modules. If a module changes, a new directory may be broadcast and processed by the receiver. Examination of the directory may then reveal changes to modules in the corresponding carousel. However, directory modules themselves may be relatively large and the processing, verification, and analyzing of such modules may not be trivial. In addition, in order to ensure receivers are notified of changes without undue latency, these directory modules must be broadcast with a relatively frequently. Consequently, such an approach may consume an inordinate amount of bandwidth.
In view of the above, an efficient method and mechanism for managing data is desired.